001 /** 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: Dec 1, 2002 005 * Time: 2:09:10 AM 006 */ 007 008 package EVolve.util.painters; 009 010 import EVolve.visualization.AutoImage; 011 import EVolve.visualization.Predictor; 012 013 public class MissRatePainter extends PredictionPainter{ 014 private long predictCounter, hitCounter, lastX; 015 private float maxMiss = 0; 016 017 public MissRatePainter(Predictor[] predictor,int targetType) { 018 super(predictor,targetType); 019 predictCounter = 0; 020 hitCounter = 0; 021 lastX = 0; 022 maxMiss = 0; 023 } 024 025 public String getName() { 026 return "Miss Prediction Metric Painter"; 027 } 028 029 public void paint(AutoImage image, long x, long y, long z) { 030 predictor[(int)y].newTarget2(z); 031 032 if (x>=miss.length) { 033 int [] newmetrics = new int[miss.length+200]; 034 for (int i =0; i< newmetrics.length; i++) 035 if (i<miss.length) 036 newmetrics[i] = miss[i]; 037 else newmetrics[i] = 0; 038 miss = newmetrics; 039 } 040 041 if (x != lastX) { 042 if (predictCounter != 0) 043 miss[(int)lastX] = (int)(300*(predictCounter - hitCounter)/predictCounter); 044 if (maxMiss < (float)miss[(int)lastX]/300) { 045 maxMiss = (float)miss[(int)lastX]/300; 046 } 047 for (int i = (int)lastX; i<x; i++) 048 { 049 miss[i] = miss[(int)lastX]; 050 if (miss[(int)lastX] != 0) 051 image.setColor(i,miss[(int)lastX],colorRed); 052 } 053 lastX = x; 054 } 055 if (validateTarget(y,z)) { 056 predictCounter++; 057 if (predictor[(int)y].isCorrect()) { 058 hitCounter ++; 059 } 060 } 061 } 062 063 public float getMaxMiss() { 064 return maxMiss; 065 } 066 067 public float getMissrate(int X) { 068 return ((float)miss[X])/3; 069 } 070 }